import { type App, getCurrentInstance } from 'vue'
import type { MpShareOptions } from '@/types/share'

export default {
  install(app: App) {
    // 设置全局默认分享配置
    // 应用初始化时，非必须（但推荐）
    // 全局默认值
    // Uniapp 的 onLoad() 是页面级生命周期，早于 Vue 的 setup()
    // 需要确保在 onShareAppMessage 被调用时 $mpShare 已经存在
    app.config.globalProperties.$mpShare = {
      title: '网站',
      path: '',
      imageUrl: ''
    }

    // 添加全局 mixin
    app.mixin({
      onLoad() {
        const instance = getCurrentInstance()
        if (instance) {
          console.log('instance is ', instance)
          // 数据为空，即是默认值
          instance!.proxy!.$mpShare = {
            title: '网站',
            path: '',
            imageUrl: ''
          }
        }
      },
      // #ifdef MP-WEIXIN
      // 分享给好友
      onShareAppMessage(): MpShareOptions {
        const instance = getCurrentInstance()
        return instance?.proxy?.$mpShare || {}
      },
      // 分享朋友圈
      onShareTimeline(): MpShareOptions {
        const instance = getCurrentInstance()
        return instance?.proxy?.$mpShare || {}
      }
      // #endif
    })
  }
}
